package org.example.test.test;


import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

/**
 * 坐标移动
 * 开发一个坐标计算工具， A表示向左移动，D表示向右移动，W表示向上移动，S表示向下移动。从（0,0）点开始移动，从输入字符串里面读取一些坐标，并将最终输入结果输出到输出文件里面。
 * <p>
 * 输入：
 * <p>
 * 合法坐标为A(或者D或者W或者S) + 数字（两位以内）
 * <p>
 * 坐标之间以;分隔。
 * <p>
 * 非法坐标点需要进行丢弃。如AA10;  A1A;  $%$;  YAD; 等。
 * <p>
 * 下面是一个简单的例子 如：
 * <p>
 * A10;S20;W10;D30;X;A1A;B10A11;;A10;
 * <p>
 * 处理过程：
 * <p>
 * 起点（0,0）
 * <p>
 * +   A10   =  （-10,0）
 * <p>
 * +   S20   =  (-10,-20)
 * <p>
 * +   W10  =  (-10,-10)
 * <p>
 * +   D30  =  (20,-10)
 * <p>
 * +   x    =  无效
 * <p>
 * +   A1A   =  无效
 * <p>
 * +   B10A11   =  无效
 * <p>
 * +  一个空 不影响
 * <p>
 * +   A10  =  (10,-10)
 * <p>
 * 结果 （10， -10
 */
public class CoordinateMovement {
    public static void main(String[] args) {
        String s = "A10;S20;W10;D30;X;A1A;B10A11;;A10;";
        System.out.println(coordinateMovement(s));
    }

    public static String coordinateMovement(String s) {
        ArrayList<Character> characters = new ArrayList<>();
        characters.add('W');
        characters.add('A');
        characters.add('S');
        characters.add('D');
        int x = 0;
        int y = 0;
        List<String> list = Arrays.asList(s.split(";"));
        for (String string : list) {
            //校验
            if (string.length() < 2) {
                continue;
            }
            if (!characters.contains(s.charAt(0))) {
                continue;
            }
            boolean isContinue = true;
            for (int i = 1; i < string.length(); i++) {
                if (!Character.isDigit(string.charAt(i))) {
                    isContinue = false;
                    break;
                }
            }
            if (isContinue){
                //计算
                String s0 = string.substring(0, 1);
                int value = Integer.parseInt(string.substring(1));
                if ("W".equals(s0)) {
                    y += value;
                } else if ("A".equals(s0)) {
                    x -= value;
                } else if ("S".equals(s0)) {
                    y -= value;
                } else if ("D".equals(s0)) {
                    x += value;
                }
            }
        }
        return x + "," + y;
    }
}























